package main

import "fmt"

// 递归：自己调用自己

// 1. 实现阶乘
// 5! = 5*4*3*2*1
// 4! = 4*3*2*1
// 3! = 3*2*1
func f(n int) int {
	if n <= 1 {
		return 1
	}
	return n * f(n-1)
}

// 2. 走台阶 面试题
// 楼梯有n个台阶，上楼可以一步上1阶，也可以一步上2阶，一共有多少种上楼的方法？
func taijie(n uint) uint {
	if n == 1 {
		return 1
	}
	if n == 2 {
		return 2
	}
	return taijie(n-1) + taijie(n-2)
}

func main() {
	n := f(5)
	fmt.Printf("n: %v\n", n)

	ret := taijie(5)
	fmt.Printf("ret: %v\n", ret)
}
